package com.binhthuan.catechist.client.dto;

import java.util.HashSet;
import java.util.Set;

import name.pehl.piriti.client.json.Json;
import name.pehl.piriti.client.json.JsonReader;
import name.pehl.piriti.client.json.JsonWriter;

import com.google.gwt.core.client.GWT;

/**
 * @author Giang Đinh - Kế hoạch học tập, tương ứng với bảng
 *         <b>ke_hoach_hoc_tap</b> trong cơ sở dữ liệu.
 */
public class Plan {

    public interface PlanReader extends JsonReader<Plan> {
    }
    public interface PlanWriter extends JsonWriter<Plan> {
    }

    public static PlanReader READER = GWT.create(PlanReader.class);
    public static PlanWriter WRITER = GWT.create(PlanWriter.class);

    /**
     * Mã kế hoạch.
     */
    @Json
    private Integer id;

    /**
     * Tên kế hoạch.
     */
    @Json
    private String name;

    /**
     * Chi tiết kế hoạch.
     */
    @Json
    private Set<PlanDetail> details;

    public Plan() {
        details = new HashSet<PlanDetail>(0);
    }

    /**
     * Lấy mã kế hoạch.
     * @return Mã kế hoạch.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã kế hoạch.
     * @param id
     *            Mã kế hoạch.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy tên kế hoạch.
     * @return Tên kế hoạch.
     */
    public String getName() {
        return name;
    }

    /**
     * Gán tên kế hoạch.
     * @param name
     *            Tên kế hoạch.
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Lấy chi tiết kế hoạch.
     * @return Chi tiết kế hoạch.
     */
    public Set<PlanDetail> getDetails() {
        return details;
    }

    /**
     * Gán chi tiết kế hoạch.
     * @param details
     *            Chi tiết kế hoạch.
     */
    public void setDetails(Set<PlanDetail> details) {
        this.details = details;
    }
}
